package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcWatchAlarmClock;
import com.csun.cmny.provider.model.dto.watch.WatchAlarmClockDto;
import com.csun.cmny.provider.model.dto.watch.WatchAlarmClockPageQuery;
import com.github.pagehelper.PageInfo;

import java.util.Map;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-01-24 14:54
 * @Description: the interface dmc watch alarm clock service
 */
public interface DmcWatchAlarmClockService extends IService<DmcWatchAlarmClock> {

    /**
     * query dmc watch alarm clock list with page
     *
     * @param watchAlarmClockPageQuery  watch alarm clock page query
     *
     * @return  the page info
     */
    PageInfo queryDmcWatchAlarmClockListWithPage(WatchAlarmClockPageQuery watchAlarmClockPageQuery);

    /**
     * add dmc watch alarm clock
     *
     * @param watchAlarmClockDto    watch alarm clock dto
     * @param loginAuthDto          login auth dto
     *
     * @return  the int.
     */
    Integer addDmcWatchAlarmClock(WatchAlarmClockDto watchAlarmClockDto, LoginAuthDto loginAuthDto);

    /**
     * delete dmc watch alarm clock by id
     *
     * @param id
     *
     * @return the int.
     */
    Integer deleteDmcWatchAlarmClockById(Long id);

    /**
     * edit dmc watch alarm clock
     *
     * @param watchAlarmClockDto    watch alarm clock dto
     * @param loginAuthDto          login auth dto
     *
     * @return  the int.
     */
    Integer editDmcWatchAlarmClock(WatchAlarmClockDto watchAlarmClockDto, LoginAuthDto loginAuthDto);

    /**
     * remove dmc watch alarm clock
     *
     * @param deviceId  device id
     *
     * @return  the int.
     */
    Integer removeDmcWatchAlarmClock(Long deviceId);

    /**
     * get one wait send alarm clock by device id
     *
     * @param deviceId  device id
     *
     * @return  the dmc watch alarm clock
     */
    DmcWatchAlarmClock getOneWaitSendAlarmClockByDeviceId(Long deviceId);

    /**
     * send alarm clock finish
     *
     * @param id
     *
     * @return  the int.
     */
    Integer sendAlarmClockFinish(Long id);

    /**
     * select watch alarm clock by device id
     *
     * @param deviceId  the device id
     *
     * @return  the map
     */
    Map<String, Object> selectByDeviceId(Long deviceId);
}
